# cv2.cvtColor()：颜色空间转换，例如 RGB 转灰度、BGR 转 HSV 等。
# 功能：用于转换图像从一个颜色空间到另一个颜色空间
# 参数：
# src: 输入图像，这是一个包含图像数据的 NumPy 数组。
# code: 用于指定颜色空间转换的代码，它是一个整数标识符，表示源颜色空间和目标颜色空间之间的转换。
# OpenCV 提供了多种转换代码，如 cv2.COLOR_BGR2GRAY（从 BGR 转换到灰度图），cv2.COLOR_RGB2HSV（从 RGB 转换到 HSV），等等。
# dst: 输出图像，与输入图像具有相同的大小和深度。这是一个可选参数，如果不提供，函数会创建一个新的图像来存储转换结果。
# flags: 一个可选的标志，用于指定颜色转换的一些特定选项。在大多数情况下，这个参数可以省略，因为它有默认值。
# 函数返回值：
# dst: 转换后的图像，这是一个包含新颜色空间图像数据的 NumPy 数组。


import cv2
import matplotlib.pyplot as plt

img_cv2_bgr = cv2.imread("../images/demo2.png")
cv2.imshow("img_cv2_bgr", img_cv2_bgr)
cv2.waitKey(0)

# 若将cv2读取的图片用matplotlib显示，可以吗？
# 可以，但是需要将BGR转为RGB
img_matplotlib_rgb = cv2.cvtColor(img_cv2_bgr, cv2.COLOR_BGR2RGB)
plt.imshow(img_matplotlib_rgb)
plt.show()

# 将图片转为灰度图
img_cv2_gray = cv2.cvtColor(img_cv2_bgr, cv2.COLOR_BGR2GRAY)
cv2.imshow("img_cv2_gray", img_cv2_gray)
cv2.waitKey(0)
# 若想用matplotlib显示灰度图，需要用cmap进行颜色映射
img_matplotlib_gray = cv2.cvtColor(img_cv2_gray, cv2.COLOR_GRAY2RGB)
plt.imshow(img_matplotlib_gray, cmap="gray")
plt.show()


"""
    opencv 读取的图像 用opencv显示没有问题
    但是要有matplotlib显示，就要考虑颜色通道转换和颜色空间映射
"""